// 交叉类型（Intersection Types）交叉类型是将多个类型合并为一个类型
// 联合类型（Union Types）联合类型与交叉类型很有关联，但是使用上却完全不同  联合类型表示一个值可以是几种类型之一

interface User {
  name: string;
}

interface User1 {
  age: number;
}

const u: User & User1 = {
  name: "123",
  age: 16,
};

const uu: User | User1 = {
  age: 15,
};

function test(a: string | number): number {
	// 类型保护
  if (typeof a === "string") return a.length;

  return a;
}

const el = document.querySelector('main')

// 经过各种操作

// ES6 
el?.className;
// 类型断言
(el as HTMLElement).className;
(<HTMLElement>el ).className;
// 非空断言
// (!el).className
// 使用&&
// el && el.className
